home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / pyxmpp / iq.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  3KB  |  87 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. __revision__ = '$Id: iq.py 651 2006-08-27 19:26:45Z jajcus $'
  5. __docformat__ = 'restructuredtext en'
  6. import libxml2
  7. from pyxmpp.xmlextra import get_node_ns_uri
  8. from pyxmpp.stanza import Stanza, gen_id
  9.  
  10. class Iq(Stanza):
  11.     stanza_type = 'iq'
  12.     
  13.     def __init__(self, xmlnode = None, from_jid = None, to_jid = None, stanza_type = None, stanza_id = None, error = None, error_cond = None, stream = None):
  14.         self.xmlnode = None
  15.         if isinstance(xmlnode, Iq):
  16.             pass
  17.         elif isinstance(xmlnode, Stanza):
  18.             raise TypeError, "Couldn't make Iq from other Stanza"
  19.         elif isinstance(xmlnode, libxml2.xmlNode):
  20.             pass
  21.         elif xmlnode is not None:
  22.             raise TypeError, "Couldn't make Iq from %r" % (type(xmlnode),)
  23.         elif not stanza_type:
  24.             raise ValueError, 'type is required for Iq'
  25.         elif not stanza_id and stanza_type in ('get', 'set'):
  26.             stanza_id = gen_id()
  27.         
  28.         if not xmlnode and stanza_type not in ('get', 'set', 'result', 'error'):
  29.             raise ValueError, 'Invalid Iq type: %r' % (stanza_type,)
  30.         
  31.         if xmlnode is None:
  32.             xmlnode = 'iq'
  33.         
  34.         Stanza.__init__(self, xmlnode, from_jid = from_jid, to_jid = to_jid, stanza_type = stanza_type, stanza_id = stanza_id, error = error, error_cond = error_cond, stream = stream)
  35.  
  36.     
  37.     def copy(self):
  38.         return Iq(self)
  39.  
  40.     
  41.     def make_error_response(self, cond):
  42.         if self.get_type() in ('result', 'error'):
  43.             raise ValueError, "Errors may not be generated for 'result' and 'error' iq"
  44.         
  45.         iq = Iq(stanza_type = 'error', from_jid = self.get_to(), to_jid = self.get_from(), stanza_id = self.get_id(), error_cond = cond)
  46.         n = self.get_query()
  47.         if n:
  48.             n = n.copyNode(1)
  49.             iq.xmlnode.children.addPrevSibling(n)
  50.         
  51.         return iq
  52.  
  53.     
  54.     def make_result_response(self):
  55.         if self.get_type() not in ('set', 'get'):
  56.             raise ValueError, "Results may only be generated for 'set' or 'get' iq"
  57.         
  58.         iq = Iq(stanza_type = 'result', from_jid = self.get_to(), to_jid = self.get_from(), stanza_id = self.get_id())
  59.         return iq
  60.  
  61.     
  62.     def new_query(self, ns_uri, name = 'query'):
  63.         return self.set_new_content(ns_uri, name)
  64.  
  65.     
  66.     def get_query(self):
  67.         c = self.xmlnode.children
  68.         while c:
  69.             
  70.             try:
  71.                 if c.ns():
  72.                     return c
  73.             except libxml2.treeError:
  74.                 pass
  75.  
  76.             c = c.next
  77.  
  78.     
  79.     def get_query_ns(self):
  80.         q = self.get_query()
  81.         if q:
  82.             return get_node_ns_uri(q)
  83.         else:
  84.             return None
  85.  
  86.  
  87.